package com.ruoyi.news.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;
import com.ruoyi.news.mapper.NewsMapper;
import com.ruoyi.news.domain.News;
import com.ruoyi.news.service.INewsService;
import com.ruoyi.oss.config.OssConfig;
import com.basic.service.impl.BaseServiceImpl;

/**
 * 新闻Service业务层处理
 * 
 * @author 王强
 * @date 2024-01-21
 */
@Service
public class NewsServiceImpl extends BaseServiceImpl<Long, News> implements INewsService {
	OssConfig config;

	@Resource
	public void setConfig(OssConfig config) {
		this.config = config;
	}

	public NewsServiceImpl(NewsMapper baseMapper) {
		super(baseMapper);
		// TODO Auto-generated constructor stub
	}

	/**
	 * 查询新闻
	 * 
	 * @param id 新闻主键
	 * @return 新闻
	 */
	@Override
	public News selectById(Integer id) {
		return baseMapper.selectById(id);
	}

	/**
	 * 查询新闻列表
	 * 
	 * @param news 新闻
	 * @return 新闻
	 */
	@Override
	public List<News> selectList(News news) {
		List<News> selectList = baseMapper.selectList(news);

		if (0 == selectList.size()) {
			return selectList;
		}

		String prefix = "http://".concat(config.getURL());

		for (News item : selectList) {

			item.setCover(prefix.concat(item.getCover()));

		}

		return selectList;
	}

	private void common(News news) {

		String pic = news.getCover();

		if (null == pic) {
			return;
		}

		String prefix = (config.getURL());

		pic = pic.replaceAll("http://", "").replaceAll("https://", "").replaceAll(prefix, "");

		news.setCover(pic);
	}

	/**
	 * 新增新闻
	 * 
	 * @param news 新闻
	 * @return 结果
	 */
	@Override
	public int insert(News news) {
		insertProperties(news);

		common(news);
		return baseMapper.insert(news);
	}

	/**
	 * 修改新闻
	 * 
	 * @param news 新闻
	 * @return 结果
	 */
	@Override
	public int update(News news) {
		updateProperties(news);

		common(news);
		return baseMapper.update(news);
	}

	/**
	 * 批量删除新闻
	 * 
	 * @param ids 需要删除的新闻主键
	 * @return 结果
	 */
	@Override
	public int deleteByIds(Integer[] ids) {
		return baseMapper.deleteByIds(ids);
	}

	/**
	 * 删除新闻信息
	 * 
	 * @param id 新闻主键
	 * @return 结果
	 */
	@Override
	public int deleteById(Integer id) {
		return baseMapper.deleteById(id);
	}
}
